Management of different types of resources (such as software components, applications or devices) is a critical issue in a data processing system with a distributed architecture. This problem is particularly acute when the system includes a high number of logical and/or physical entities (referred to as subjects), each one directly controlling different resources; the problem is further exacerbated if the subjects have a high level of complexity or are dispersed across a large number of installations.
The management environments known in the art are based on an enforcement model (also known as manager/workers model). In this model, the process is entirely controlled by an authority residing at a central site of the system. The authority defines a desired configuration of every subject. For this purpose, the authority accesses a central repository storing the alleged current configuration of each subject, and determines the management actions required to bring the subject to the desired configuration starting from its current configuration. The management actions are then enforced remotely by the authority on the subject, which is totally passive.
A drawback of the management environments known in the art is the lack of any kind of cooperation between the authority and the subjects. This lack of cooperation may lead to inconsistencies when the subjects are upgraded out of the control of the authority. Moreover, in the solutions currently employed, the management of subjects that are temporarily unavailable or off-line is quite difficult to implement. The known management environments also require the authority to maintain information about the location of all the subjects; at the same time, the authority must handle the communication with every subject directly.
An additional problem arises when the completion of some management actions on specific subjects is a prerequisite to the execution of further management actions on other subjects. A typical example is the deployment of a distributed software application with a client-server architecture; in this case, the installation of a client-side component of the application requires that its server-side component be already available. More complex dependencies are experienced in large and highly dynamic systems with several correlated tiers.
As a consequence, the authority must explicitly define a workflow that drives the enforcement of the management actions on the different subjects in the correct sequence. The authority must also handle any conditioning among the different stages of the workflow directly.
Moreover, the above-mentioned drawbacks increase the difficulty of correctly defining any solution to be deployed in the system.